There are many applications in computing that require high speed digital counters. For instance, in the field of telecommunications there are digital counters for many statistics. Particularly, many network elements maintain counters for statistics such as incoming packets, outgoing packets, and packets falling within particular categories. It is particularly important that these counters be able to increment at very high rates to maintain accurate statistics as events requiring counting occur very quickly.
For example, in some telecommunication applications that utilize network elements for packet based communication it is necessary to count the number of incoming packets. As each packet arrives at a line card in a network element an incoming packet counter is incremented to keep track of the number of incoming packets. As the speed of telecommunication increases, the rate at which packets arrive to a network element increases as well. Thus, the speed at which a counter increments must increase accordingly.
Furthermore, the number of simultaneous counters that have to be maintained can be in the hundreds of thousands or millions, and maintaining the counter state to keep up with the count rate is difficult and costly. Fast memory comes at an increase in size, power, or cost. For example, in a given technology point, an external RL-DRAM component is about 4 times faster, 4 times smaller, and 16 times more expensive than an equivalent DDR-DRAM component. Hence there exists a desire to have the size and cost of the slower memory along with the performance of the faster memory.